﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Micro.Modules.Abstractions
{
    public interface IModule
    {
        string PluginId { get; }
        /// <summary>
        /// 唯一标识
        /// </summary>
        string Code { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        string Name { get; set; }
        /// <summary>
        /// 版本号
        /// </summary>
        string Version { get; set; }
        /// <summary>
        /// 描述
        /// </summary>
        string Description { get; set; }

        /// <summary>
        /// 作者
        /// </summary>
        string Author { get; set; }

        /// <summary>
        /// 模块路径
        /// </summary>
        string ModulePath { get; set; }

        /// <summary>
        /// swagger当位于代理后时，通过配置此参数可以指定代理请求前缀。
        /// </summary>
        string SwaggerPathBase { get; set; }


        /// <summary>
        /// 初始化
        /// </summary>
        BaseModule Initializer { get; set; }
        /// <summary>
        /// 模块程序集加载上下文
        /// </summary>
        IModuleAssemblyLoadContext Context { get; set; }

        /// <summary>
        /// 程序集
        /// </summary>
        IModuleRuntime ModuleRuntime { get; set; }
    }
}
